package com.tjf.lib_utils;

import java.util.Timer;
import java.util.TimerTask;

public class TimerUtil {

    // 私有静态Timer实例，确保单例
    private static Timer timer = null;

    // 私有构造方法，避免外部实例化
    private TimerUtil() {}

    // 获取Timer实例，如果实例不存在则创建
    private static Timer getTimer() {
        if (timer == null) {
            timer = new Timer();
        }
        return timer;
    }

    // 定时执行任务的方法
    // delay: 延迟执行的时间（毫秒）
    // period: 两次任务之间的时间间隔（毫秒）
    public static void scheduleTask(TimerTask task, long delay, long period) {
        getTimer().scheduleAtFixedRate(task, delay, period);
    }

    // 取消所有任务的方法
    public static void cancelAllTasks() {
        if (timer != null) {
            timer.cancel();
            timer = null; // 最好将timer置为null，以便下次调用getTimer()时重新创建
        }
    }

    // 示例TimerTask子类，重写run方法定义任务内容
    public static class MyTimerTask extends TimerTask {
        @Override
        public void run() {
            // 在这里执行你的任务逻辑
            System.out.println("Task executed at: " + System.currentTimeMillis());
        }
    }

    // 测试方法
    public static void main(String[] args) {
        TimerUtil.scheduleTask(new MyTimerTask(), 0, 2000); // 立即开始，每2秒执行一次

        // 为了模拟长时间运行的应用，这里使用Thread.sleep阻塞主线程
        // 注意：在实际应用中，不应该在主线程中这样做，应该使用合适的生命周期方法或后台线程
        try {
            Thread.sleep(10000); // 运行10秒后停止
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        TimerUtil.cancelAllTasks(); // 取消所有任务
    }
}